/* 希尔排序 */
#include <stdio.h>
#include "public.h"

int main(){

    //定义无序数组
    int arr[] = {5,6,9,1,3,2,7,8,4,0};
    int len = sizeof(arr)/4;

    //创建希尔增量，希尔增量减小到0时，完成排序
    for(int gap = len/2;gap > 0;gap /= 2){

        //使用希尔增量做插入排序
        for(int i = 0; i < len - gap; i++){

           int min = i;
           for(int j = i+gap; j < len; j += gap){
               if(arr[min] > arr[j]){
                   min = j;
               }
           }
           
           if(i != min){
               swap(arr,min,i);
           }
        }

    }

    //输出排序后数组
    each(arr,len);
}